#include<bits/stdc++.h>
using namespace std;
// #define int long long
const int N=1e6+4;
int n,dp[N][3][2];
string s,t;
void up(int &x,int y){
    x=min(x,y);
}
signed main(){
    freopen("hard.in","r",stdin);
    freopen("hard.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n>>s>>t;
    s=' '+s,t=' '+t;
    memset(dp,0x7f,sizeof(dp));
    dp[0][2][0]=0;
    for(int i=1;i<=n;i++){
        for(int j=0;j<=2;j++)
            for(int k=0;k<=1;k++) up(dp[i][2][s[i]^t[i]],dp[i-1][j][k]+((s[i]^t[i])&&(!k)));
        for(int j=0;j<=1;j++)
            for(int k=0;k<=1;k++)
                up(dp[i][j][j^(t[i]-'0')],dp[i-1][j][k]+(k!=(j^(t[i]-'0'))));
        for(int j=0;j<=2;j++)
            for(int k=0;k<=1;k++){
                up(dp[i][t[i]-'0'][0],dp[i-1][j][k]+(j!=t[i]-'0'));
                up(dp[i][(t[i]-'0')^1][1],dp[i-1][j][k]+(j!=((t[i]-'0')^1))+(k^1));
            }
    }
    // for(int i=1;i<=n;i++)
    //     for(int j=0;j<=2;j++)
    //         for(int k=0;k<=1;k++)
    //             if(dp[i][j][k]!=dp[0][0][1]) cerr<<i<<" "<<j<<" "<<k<<" "<<dp[i][j][k]<<"\n";
    int ans=n+1;
    for(int j=0;j<=2;j++)
        for(int k=0;k<=1;k++) up(ans,dp[n][j][k]);
    cout<<ans;
}